package com.ala4.oxcafe.common.utils.object;

import java.util.Objects;
import java.util.stream.Stream;

/**
 * object工具类
 *
 * @author PING
 * @version 1.0.0
 * @date 2025/8/1 09:41
 */
public class ObjectUtil {

    private ObjectUtil() {
    }


    /**
     * 检查对象是否为null<br>
     * 判断标准为：
     *
     * <pre>
     * 1. == null
     * 2. equals(null)
     * </pre>
     *
     * @param obj 对象
     * @return 是否为null
     */
    public static boolean isNull(Object obj) {
        //noinspection ConstantConditions
        return null == obj || obj.equals(null);
    }

    /**
     * 检查对象是否不为null
     * <pre>
     * 1. != null
     * 2. not equals(null)
     * </pre>
     *
     * @param obj 对象
     * @return 是否为非null
     */
    public static boolean isNotNull(Object obj) {
        //noinspection ConstantConditions
        return null != obj && false == obj.equals(null);
    }


    public static boolean anyNull(final Object... values) {
        return !allNotNull(values);
    }

    /**
     * 测试数组中的所有值是否均为空。
     * 如果任何值为空或数组为空，则返回假。如果数组中的所有元素都不为空或数组为空（不包含元素），则返回true。
     *
     * @param values
     * @return
     */
    public static boolean allNotNull(final Object... values) {
        return values != null && Stream.of(values).noneMatch(Objects::isNull);
    }
}
